
\begin{itemize}
\item 
模板提供了在编译时进行计算的能力(使用递归进行迭代，使用偏特化或三元操作符进行选择)。

\item 
使用constexpr函数，可以将大多数编译时计算替换为，可在编译时上下文中调用的“普通函数”。

\item 
使用偏特化，可以根据特定的编译时约束，在类模板的不同实现之间进行选择。

\item 
模板只在需要的时候使用，在函数模板声明中的替换不会导致代码无效。这个原则称为SFINAE(替换失败不为过)。

\item 
SFINAE只能用于为特定类型和/或约束提供函数模板。

\item 
C++17起，编译时if允许根据编译时条件(甚至在模板外部)启用或丢弃语句。
\end{itemize}